Introduction

L’objet de cette page est de présenter l’approche adoptée pour analyser les donneés temporelles associées aux camions et captées par le système SIWIM, puis pour construire le meilleur modèle de prédiction possible.

1. Calcul des données avec le pas temporel donné

Nous avons décidé de partir sur une prévision dans l’heure, donc nous allons agréger les donnnées par date et par heure. Par cette opération, nous allons compter le nombre de camions, sommer les poids et les distances entre esseiux des camions et enfin prendre la moyenne de température, de la vitesse des camions.

Nous créeons ensuite un certain nombre de variables catégorielles et numériques autour du temps (année, mois, semaine, jour, jour de la semaine.

Voici une réprsentation graphique des différentes données :

Quelques indications de la disribution par jour et par heure.

2. Geston des valeurs manquantes (dates et heures)

Plusieurs périodes montrent un manque de données dû surement à une défection du système SIWIM. L’idee de reconstituer les valeurs de fréquences par interpolation linéaire ou spline. Pou cela, nous allons compléter la série temporelle par les dates et heures manquantes.

Dates et heures manquantes
2017-09-15 02:00:00
2017-09-14 03:00:00
2017-08-27 17:00:00
2017-10-09 08:00:00
2017-08-24 08:00:00

Nous construisons un nouveau data set uniquement pour les dates et heures manquantes. Les données catégorielles et numériques liées au temps sont déduites en même temps. Enfin, nous fusionnons le dataset de données existantes et celui de données manquantes.

Nous réalisons ensuite une interpolation linéaire et spline sur le dataset complet.

L’interpolation spline semble mieux compléter la série temporelle.

3. Modèles classiques de séries temporelles

Avant d’utiliser d’appliquer un modèle classique sur les séries temporelles, nous devons vérifier si elle est stationnaire. Une série temporelle stationnaire doit satisfaire 3 critères : + sa moyenne doit être constante dans le temps + sa variance doit être indépendante du temps + la covariance entre termes doit être indépendante du temps.

3.1 Le test de Dickey-fuller

Le test de Dickey-fuller a pour hypothèse \(H_0\) qu’une racine unitaire est présente dans une modèle auto-regressif d’ordre 1. L’hypothèse alternative est la stationnarité de la série temporelle.

\(y_t = \rho y_{t-1} + u_t\). Une racine unitaire est présente si \(\rho = 1\).

Cette équation est reformulée par différence de \(y_t\) avec \(y_{t-1}\) : \(\nabla y_t = (\rho - 1) y_{t-1} + u_t = \delta y_{t-1} + u_t\)

L’hypothèse \(H_0\) devient : \(\delta = 0\). 2 autres versions du test existent : + avec une constante intiale : \(y_t = a_0 + \rho y_{t-1} + u_t\) + avec une tendance temporelle : \(y_t = a_0 + a_1 t+ \rho y_{t-1} + u_t\)

Le test augmenté de Dickey-fuller supprime tous les effets structurels dus aux autocorrelations d’ordre supérieur à 1.

## 
##  Augmented Dickey-Fuller Test
## 
## data:  siwim_data_hours$Count
## Dickey-Fuller = -3.6732, Lag order = 168, p-value = 0.02561
## alternative hypothesis: stationary

Le nombre de différences requises pour que la série soit stationnaire est de \(0\)

3.2 Analyse des autocorrélations et autocorrélations partielles

La fonction d’autocorrelation (ACF) mesure la correlation entre la série temporelle et elle-même décalée dans le temps (lags t-1, t-2, etc.). Par exemple, pour le lag d’ordre 5, ACF compare la série temporelle à l’instant t avec la série temporelle à l’instant t-5.

Pour une série de type moyenne mobile de lag n, il n’y aura aucune corrélation entre \(x(t)\) et \(x(t-n-1)\). Donc, le graphique d’autocorrélation passe en dessous d’une certaine valeur au \(n^{ème}\) lag. De cette manière, on trouve l’ordre idéal pour une série de type MA (Moving average).

La fonction d’autocorrélation partielle mesure la corrélation entre une série temporelle et elle-même décalée dans le temps, après avoir éliminé les varaitions déjà expliquées par les comparaisons intermédiaires (dus aux lags précédents). PAr exemple, pour le lag d’ordre 5, elle va comparer la corrélation avec l’instant t, mais elle supprime les effets adèjà expliqués par les lags 1 à 4.

A l’instar du graphique ACF, PACF passera en dessous d’une certaine valeur après un certain lag qui donne l’ordre d’une série de type AR (auto-regressive). Par exemple, si on prendre une série AR d’ordre 1 et si on exclut l’effet du lag d’ordre 1 (\(x(t-1)\)), le lag d’ordre 2 (\(x(t-2)\)) est indépendant de \(x(t)\). Donc la fonction d’autocorrélation partielle diminuera rapidement après le lag d’ordre 1.

On peut constater que le graphique ACF nous indique un ordre MA de 8 et le graphique PACF nous indique un ordre AR de 1.

3.3 ARIMA : Auto-regressive integrated moving average

Number of AR (Auto-Regressive) terms (p): AR terms are just lags of dependent variable. For instance if p is 5, the predictors for x(t) will be x(t-1)..x(t-5). Number of MA (Moving Average) terms (q): MA terms are lagged forecast errors in prediction equation. For instance if q is 5, the predictors for x(t) will be e(t-1)..e(t-5) where e(i) is the difference between the moving average at ith instant and actual value. Number of Differences (d): These are the number of nonseasonal differences, i.e. in this case we took the first order difference. So either we can pass that variable and put d=0 or pass the original variable and put d=1. Both will generate same results.

q - The lag value where the ACF chart crosses the upper confidence interval for the first time p - The lag value where the PACF chart crosses the upper confidence interval for the first time.

\(p = 1\) and \(q = 8\)

3.3.1 ARIMA autoregressif d’ordre 1



3.3.2 ARIMA moyenne mobile d’ordre 1



3.3.3 ARIMA autoregressif d’ordre 1 et moyenne mobile d’ordre 8



3.3.4 ARIMA auto



3.3.5 ARIMA avec une saisonnalité (24 heures)



3.3.6 ARIMA avec double saisonnalité (24 heures et 7 jours)



3.3.7 Résultats des erreurs par modèle ARIMA

ME RMSE MAE MPE MAPE MASE ACF1
Modèle AR 0.0551125 23.44477 15.64161 -42.58471 59.65201 1.0077004 0.2510202
Modèle MA 0.0129023 22.13703 15.36456 -67.18720 82.54818 0.9898522 0.0101378
Modèle ARMA 0.0302862 21.43891 14.38407 -35.04558 59.21652 0.9266842 0.0223771
Modèle auto ARIMA 0.0286759 20.37799 13.58248 -44.71983 64.20429 0.3918990 0.0004520
Modèle ARIMA avec saison 0.0286759 20.37799 13.58248 -44.71983 64.20429 0.3918990 0.0004520
Modèle ARIMA avec double saison 0.0364122 20.43041 13.51384 -41.33014 60.19032 0.3870543 -0.0007796


3.4 Holt winters or Exponential smoothing







3.4.1 Résultats des modèles Exponential Smoothing

ME RMSE MAE MPE MAPE MASE ACF1
Sipmle Expoential Smoothing 0.0660460 23.83423 15.52235 -13.43676 40.45712 0.4478706 0.2272056
Expoential Smoothing -0.4874021 23.86568 15.59277 -17.08559 42.09580 0.4499023 0.2274684


4. Modèles d’apprentissage automatique

4.1 Premier modèle linéaire simple



4.2 Modèle linéaire avec interactions

##  Previous       New 
## 0.8792895 0.9545746



4.3 Sélection de variables de lags par stepwise pour les regressions

Résultats de la sélection :

##          (Intercept)              Heure01              Heure02 
##           9.59421759          -1.09020865           0.54205982 
##              Heure03              Heure04              Heure05 
##           2.64088171           1.63177828          11.86325680 
##              Heure06              Heure07              Heure08 
##          26.84855041          43.32919136           9.67081567 
##              Heure09              Heure10              Heure11 
##          11.92554829          17.92234708          10.30276396 
##              Heure12              Heure13              Heure14 
##          12.39874845          19.02926018          28.53946273 
##              Heure15              Heure16              Heure17 
##          21.89094857          11.08178061           2.39168501 
##              Heure18              Heure19              Heure20 
##          -3.62807002          -6.43401699          -7.42600959 
##              Heure21              Heure22              Heure23 
##          -5.58118969          -4.73008825          -2.14588119 
## Jour_semainedimanche    Jour_semainejeudi    Jour_semainemardi 
##         -12.31223273           2.75519186          -2.16598716 
## Jour_semainemercredi   Jour_semainesamedi Jour_semainevendredi 
##           3.02810112         -12.31277735           0.92405967 
##                lag_1                lag_2                lag_4 
##           0.75114780           0.14287950          -0.05637018 
##                lag_9               lag_15               lag_23 
##          -0.10768881           0.05869562           0.05299710 
##               lag_27               lag_29               lag_45 
##          -0.08286029           0.05671318          -0.06393391 
##               lag_95              lag_100              lag_111 
##          -0.04298543           0.03068071          -0.02257531 
##              lag_143              lag_164              lag_168 
##           0.02357880           0.03073459          -0.02753100 
##               lag_90 
##           0.02578676



4.4 Valdation croisée pour les séries temporelles

Les séries temporelles sont des observations ordonnées chronologiquement. Ainsi, contrairment aux données non temporelles, leur ordre a une importance dont il faut tenir compte lors de la validation croisée. Pour cela 2 approches existent :

  • estimation du modèle sur un sous-échantillon dont la taille augmente de façon incrémentale, en tenant compte de l’odre temporel des données. La prévision est réalisée sur les valeurs postérieures à cet échantillon pour un horizon de prévision donné.

  • estimation du modèle sur un groupe défini par une fenêtre glissante de taille fixe. La prévision est réalisée sur les valeurs postérieures à cet échantillon pour un horizon de prévision donné.

Validation croisée sur série temporelle

Validation croisée sur série temporelle

4.5 Modèles entrainés avec validation croisée

  • Regression linéaire simple
  • Regression linéaire simple avec interactions
  • Regression linéaire simple avec lags
  • Régression pénalisée (ridge/lasso)
  • Random forest
  • Gradient boosting